#ifndef HF_WEATHERDATA_H
#define HF_WEATHERDATA_H

#include <iostream>
#include <vector>
#include <list>
#include <memory>
using namespace std;

#include "hf_subject.h"
#include "hf_observer.h"

namespace HeadFirstS
{
    class HF_WeatherData : public HF_Subject
    {
    public:
        HF_WeatherData();
        void registerObserver(HF_Observer* o);
        void removeObserver(HF_Observer* o);
        void notifyObservers();
        void MeasurementsChanged();
        void setMeasurements(float temperature,
                             float humidity,
                             float pressure);

    private:
        list<HF_Observer*>                  m_pObservers    ;
        float                               m_temperature   ;
        float                               m_humidity      ;
        float                               m_pressure      ;
    };
}
#endif // HF_WEATHERDATA_H
